#include<bits/stdc++.h>
using namespace std;
typedef double db;
const int MAXN=100010;
int n,m,head[MAXN],cnt,deg[MAXN];
db d[MAXN];
bool vis[MAXN];
struct edge
{
	int v,next,val;
}e[MAXN*2];
void addedge(int x,int y,int z)
{
	e[++cnt]=(edge){y,head[x],z};
	head[x]=cnt;
	++deg[x];
	return;
}
void dfs(int u)
{
	if(vis[u])return;
	vis[u]=true;
	for(int i=head[u];i;i=e[i].next)
	{
		int v=e[i].v;
		dfs(v);
		d[u]+=d[v]+e[i].val;
	}
	if(deg[u])d[u]/=deg[u];
	return;
}
int main()
{
	scanf("%d%d",&n,&m);
	while(m--)
	{
		int x,y,z;
		scanf("%d%d%d",&x,&y,&z);
		addedge(x,y,z);
	}
	dfs(1);
	printf("%.2lf",d[1]);
	return 0;
}
